Doposud jsme pracovali převážně s čísly, která jsme si dokázali uložit do proměnných. Okrajově jsme se už setkali i s textovými informacemi – například když jsme příkazem canvas.create_text vykreslili text. Také při volbě náhodné barvy ze seznamu jsme si její název uložili do proměnné. V takovém případě jsme sice pracovali s barvou, ale počítač si ji pamatoval jako text – tedy jako řetězec znaků, kterému se v programování říká také textový řetězec nebo prostě řetězec.
S textovými řetězci jsme se setkali i při použití vstupního textového pole. Měli bychom tedy rozumět následujícímu programu:
import tkinter
canvas = tkinter.Canvas()
canvas.pack()
slovo1 = 'velké'
slovo2 = 'tajemství'
canvas.create_text(200, 100, text=slovo1)
canvas.create_text(200, 200, text=slovo2)
Program kreslí na obrazovku pod sebou dvě slova: “velké” a “tajemství”. Může se nám zdát, že si je zatím pamatujeme v proměnných zbytečně. Textové řetězce můžeme také spojit pomocí operace +.
import tkinter
canvas = tkinter.Canvas()
canvas.pack()
slovo1 = 'velké'
slovo2 = 'tajemství'
spojene = slovo1 + slovo2
canvas.create_text(200, 100, text=spojene)
Už také víme, že nemusíme vše psát a kreslit pouze na plátno, ale můžeme také zapisovat informace příkazem print() v okně shellu (příkazový řádek).
import tkinter
canvas = tkinter.Canvas()
canvas.pack()
slovo1 = 'velké'
slovo2 = 'tajemství'
spojene = slovo1 + slovo2
print(spojene)
V tomto příkladu vidíme, že nepotřebujeme používat canvas a knihovnu tkinter. Bude fungovat i program, jako je tento:
slovo1 = 'velké'
slovo2 = 'tajemství'
spojene = slovo1 + slovo2
print(spojene)
Co se stane, když místo spojene = slovo1 + slovo2 v programu napíšeme následující: spojene = slovo2 + slovo1?
Jak byste změnili přidružený pravopis = slovo1 + slovo2, kdybyste chtěli mít mezeru mezi slovy?
Co se stane, když nahradíme třetí řádek v předchozím programu dalším záznamem?
a. spojene = slovo1 * 2
b. spojene = slovo1 + ' ' * 2 + slovo2
c. spojene = (slovo1 + ' ') * 2 + slovo2
Odhadněte, co udělá tento program:
from random import *
jake = choice(['velké','malé','obrovské','drobné','smutné','veselé'])
co = choice(['tajemství','překvapení','předsevzetí'])
spojene = jake + ' ' + co
print(spojene)
Můžeme také vytvořit funkci z předchozího programu a doplnit program tak, aby nám napsal několik náhodně složených vět.
from random import *
def nahodna_veta():
kdo = choice(['Kamarád','Spolužák','Pavel','Karel'])
delal = choice(['viděl', 'prozradil', 'řekl', 'napsal', 'zjistil', 'nakreslil'])
jake = choice(['velké', 'malé', 'obrovské', 'drobné', 'smutné', 'veselé'])
co = choice(['tajemství', 'překvapení', 'předsevzetí'])
spojene = kdo+' '+delal+' '+jake+' '+co+'.'
print(spojene)
for i in range(1,21):
nahodna_veta()
Když spustíme program, můžeme vidět podobné věty:
Karel řekl velké překvapení.
Kamarád řekl smutné překvapení.
Spolužák řekl drobné tajemství.
...
Kamarád řekl veselé překvapení.
Pavel zjistil velké překvapení.
Rozšiřte program pro vytváření náhodných vět. Přidejte do programu další slova, vytvořte víceslovné věty.
Která slova z vět bychom mohli vynechat, pokud chceme, aby věty byly správné a smysluplné? Upravte program tak, aby věty měly proměnlivý počet slov a program se náhodně rozhodl, zda slovo z věty vynechat.
Upravte úlohu 1 nebo 2 tak, aby se ve větách vyskytovala i ženská jména, a podle toho, zda je jméno vybráno ze seznamu mužských nebo ženských jmen, je sloveso přizpůsobeno správnému rodu ve větě, např. napsal/napsala, viděl/viděla.
Vytvořte hru, ve které náhodně vylosované slovo (ze sekvence předem napsaných slov) postupně padá z horní části plátna. Například posloupnost slov se skládá ze správných a nesprávných pravopisných slov. Úkolem hráče je zachytit pouze správně napsaná slova kliknutím myši. Špatná slova musí hráč nechat propadnout do spodní části obrazovky. Za chycení správného slova získá hráč +1 bod, za chycení špatného slova ztrácí 2 body. Na obrazovce průběžně vidíme počet získaných bodů.
Vytvořte úkol č. 3 tak, aby nám hra se ziskem bodů o více než 10 bodů napsala, že nám gratuluje a že jsme vyhráli nějakou cenu. Také to může být náhodné z předem napsaného seznamu. Například: nový telefon, lístky do divadla, knížka s názvem, poukaz na doučování pravopisu, kurz uklízení…